Option Explicit

'################################################################
' Descriptor
' 字面量列 的 字段信息
'################################################################

Implements ISqlTranslateNameInfo
Implements ISqlTranslateColInfo

'################################################################
' Field
'################################################################
' 字面量 token
Private literalToken As SqlToken
' 别名 token
Private colAliasNameToken As SqlToken

'################################################################
' Init
'################################################################
Public Sub Init(ByRef literal As SqlToken)
    Set literalToken = literal
End Sub

'################################################################
' Function
'################################################################
' 获取字面量列的 token 类型
Public Function getLiteralType() As SqlTokenType
    getLiteralType = literalToken.tokenType
End Function

' 获取字面量列的值
Public Function getLiteralValue() As String
    getLiteralValue = literalToken.value
End Function

'################################################################
' Implements ISqlTranslateColInfo Function
'################################################################
' 获取使用到的原始列名
Public Function ISQLTranslateColInfo_getOriginColName() As String
    ISQLTranslateColInfo_getOriginColName = ""
End Function

' 读写变换后的列名
Public Sub ISQLTranslateColInfo_setTranslatedColName(ByRef name As String)
    Err.Raise 10000, Description:="SqlTranslateLiteralColInfo#ISQLTranslateColInfo_setTranslatedColName is not support"
End Sub

' 读取变换后的列名
Public Function ISQLTranslateColInfo_getTranslatedColName() As String
    ISQLTranslateColInfo_getTranslatedColName = ""
End Function

' 获取使用到的原始表名
Public Function ISQLTranslateColInfo_getTableName() As String
    ISQLTranslateColInfo_getTableName = ""
End Function

' 读写表的别名
Public Sub ISQLTranslateColInfo_setTableAliasName(ByRef n As String)
    Err.Raise 10000, Description:="SqlTranslateLiteralColInfo#ISQLTranslateColInfo_setTableAliasName is not support"
End Sub

' 获取所在的表的别名
Public Function ISQLTranslateColInfo_getTableAliasName() As String
    ISQLTranslateColInfo_getTableAliasName = ""
End Function

' 读写当前列的别名
Public Sub ISQLTranslateColInfo_setAliasNameToken(ByRef token As SqlToken)
    Set colAliasNameToken = token
End Sub

' 获取当前列的别名
Public Function ISQLTranslateColInfo_getAliasName() As String
    If colAliasNameToken Is Nothing Then
        ISQLTranslateColInfo_getAliasName = ""
    Else
        ISQLTranslateColInfo_getAliasName = colAliasNameToken.value
    End If
End Function

' 翻译列信息
' @param startEnv 搜索表名的起始作用域(当前列所在的 env)
' @param translateType 转换的类型(逻辑->物理=0, 物理->逻辑=1)
Public Sub ISQLTranslateColInfo_translate(ByRef startEnv As ISqlTranslateEnv, ByRef em As ISqlEntityManager, ByVal translateType As Integer)
    ' noop
End Sub

'################################################################
' Implements ISqlTranslateNameInfo Function
'################################################################
' 获取转换后名称
Public Function ISqlTranslateNameInfo_getTranslatedName() As String
    'return ""
End Function

' 获取别名
Public Function ISqlTranslateNameInfo_getAliasName() As String
    ISqlTranslateNameInfo_getAliasName = ISQLTranslateColInfo_getAliasName
End Function

' 获取非要求类型的名称
Public Function ISqlTranslateNameInfo_getReverseTypeName() As String
    'return ""
End Function